/**
一,合并流:
SequenceInputStream 表示其他输入流的逻辑串联。它从输入流的有序集合开始，并从第一个输入流
开始读取，直到到达文件末尾，接着从第二个输入流读取，以此类推，直到到达包含的最后一个输入流的文件
末尾为止。
二，字符串流：
1.StringReader
其源为一个字符串的字符流
2.StrringWriter
一个字符流,可以用其回收在字符串缓冲区中的输出来构造字符串。关闭StringWriter无效。此类中
的方法在关闭该流后仍可被调用，而不会产生任何IOException
三，管道流
管道输入流应该连接到管道输出流，管道输入流提供要写入管道输出流的所有数据字节。通常，数据由某个
线程从PipedInputStream对象读取，并由其他线程将输入流包含一个缓冲区，可在缓冲区限定的范围
内将读操作和写操作分离开。如果向连接管道输出流提供数据字节的线程不再存在，则认为该管道已损坏
 */
/*
package com.leo.第八章_文件与IO;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.BufferedOutputStream;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;
import java.io.InputStream;
public class U8_L11_合并流 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		run_文件合成();
	}
	//读：SequenceInputStream<-Enumeration<-vector<-InputStream<-FileInputStream<-File<-path
	//写：BufferedOutputStream->FileOutputStream->path
	private static void run_文件合成() {
		try {
			//这边写的是需要合并的文件
			InputStream in1=new FileInputStream(new File("E:\\eclipse-workspace\\test\\RW\\音乐1-temp-1.mp3"));
			InputStream in2=new FileInputStream(new File("E:\\eclipse-workspace\\test\\RW\\音乐2-temp-1.mp3"));
			InputStream in3=new FileInputStream(new File("E:\\eclipse-workspace\\test\\RW\\音乐3-temp-1.mp3"));
			InputStream in4=new FileInputStream(new File("E:\\eclipse-workspace\\test\\RW\\音乐4-temp-1.mp3"));
			InputStream in5=new FileInputStream(new File("E:\\eclipse-workspace\\test\\RW\\音乐5-temp-1.mp3"));
			InputStream in6=new FileInputStream(new File("E:\\eclipse-workspace\\test\\RW\\音乐6-temp-1.mp3"));
			//这个是个集合工具类 在C++中也有这个容器
			//1.vector 类 指定类型为字节输入流容器 
			Vector<InputStream> v=new Vector<InputStream>();
			v.add(in1);
			v.add(in2);
			v.add(in3);
			v.add(in4);
			v.add(in5);
			v.add(in6);
			//2.这是枚举接口 不用new 因为 elements()里面new了 
			Enumeration<InputStream> es=v.elements();
			merge(es);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	private static void merge(Enumeration<InputStream> es) {
		//读：将枚举类型es里面的vector容器的字节输入流中的文件1-6 放入 序列字节流sis中
		SequenceInputStream sis=new SequenceInputStream(es);
		//写：确定文件位置 和缓冲输出流的规格
		String distpath="E:\\eclipse-workspace\\test\\RW\\音乐合并.mp3"; //可以修改路径
		try {
			BufferedOutputStream bos=new BufferedOutputStream(
					new FileOutputStream(distpath));
			//缓冲规格是1024字节，每1mb刷新1次
			byte[] bytes=new byte[1024];
			int len=-1;
			while((len=sis.read(bytes))!=-1) {
				bos.write(bytes,0,len);
				bos.flush();
			}
			bos.close();
			sis.close();
			System.out.println("合并完成。 文件路径："+distpath);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}				
	}
}
*/